using System;
/*
 * http://www.ietf.org/rfc/rfc2845.txt
 * 
 * Field Name       Data Type      Notes
      --------------------------------------------------------------
      Algorithm Name   domain-name    Name of the algorithm
                                      in domain name syntax.
      Time Signed      u_int48_t      seconds since 1-Jan-70 UTC.
      Fudge            u_int16_t      seconds of error permitted
                                      in Time Signed.
      MAC Size         u_int16_t      number of octets in MAC.
      MAC              octet stream   defined by Algorithm Name.
      Original Id      u_int16_t      original message Id
      Error            u_int16_t      expanded RCODE covering
                                      TSIG processing.
      Other Len        u_int16_t      length, in octets, of
                                      Other Data.
      Other Data       octet stream   empty unless Error == BADTIME

 */

namespace System.Net.DnsToolkit.Packet.Records
{
	public class RecordTSIG : IRecord
	{
        public string ALGORITHMNAME { get; set; }
        public long TIMESIGNED { get; set; }
        public UInt16 FUDGE { get; set; }
        public UInt16 MACSIZE { get; set; }
        public byte[] MAC { get; set; }
        public UInt16 ORIGINALID { get; set; }
        public UInt16 ERROR { get; set; }
        public UInt16 OTHERLEN { get; set; }
        public byte[] OTHERDATA { get; set; }

        public QTypeEnum QType {
            get {
                return QTypeEnum.TSIG;
            }
        }
 public override string ToString()
		{
			DateTime dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0);
			dateTime = dateTime.AddSeconds(TIMESIGNED);
			string printDate = dateTime.ToShortDateString() + " " + dateTime.ToShortTimeString();
			return string.Format("{0} {1} {2} {3} {4}",
				ALGORITHMNAME,
				printDate,
				FUDGE,
				ORIGINALID,
				ERROR);
		}

	}
}
